home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / initrd.lz / initrd / scripts / local-premount / resume < prev   
Encoding:
Text File  |  2009-10-28  |  2.6 KB  |  131 lines

  1. #!/bin/sh
  2.  
  3. PREREQ=""
  4.  
  5. prereqs()
  6. {
  7.     echo "$PREREQ"
  8. }
  9.  
  10. case $1 in
  11. # get pre-requisites
  12. prereqs)
  13.     prereqs
  14.     exit 0
  15.     ;;
  16. esac
  17.  
  18. if [ -z "${resume}" ]; then
  19.     exit 0
  20. fi
  21.  
  22. if [ -e /conf/page_size.conf ]; then
  23.     . /conf/page_size.conf
  24. else
  25.     PAGE_SIZE=4096 # fallback
  26. fi
  27. export PAGE_SIZE
  28.  
  29. case $resume in
  30. LABEL=*)
  31.     resume="${resume#LABEL=}"
  32.  
  33.     # support any / in LABEL= path (escape to \x2f)
  34.     case "${resume}" in
  35.     *[/]*)
  36.         if [ -x "$(command -v sed)" ]; then
  37.             resume="$(echo ${resume} | sed 's,/,\\x2f,g')"
  38.         else
  39.             if [ "${resume}" != "${resume#/}" ]; then
  40.                 resume="\x2f${resume#/}"
  41.             fi
  42.             if [ "${resume}" != "${resume%/}" ]; then
  43.                 resume="${resume%/}\x2f"
  44.             fi
  45.             IFS='/'
  46.             newresume=
  47.             for s in $resume; do
  48.                 if [ -z "${newresume}" ]; then
  49.                     newresume="${s}"
  50.                 else
  51.                     newresume="${newresume}\\x2f${s}"
  52.                 fi
  53.             done
  54.             unset IFS
  55.             resume="${newresume}"
  56.         fi
  57.     esac
  58.     resume="/dev/disk/by-label/${resume}"
  59.     ;;
  60. UUID=*)
  61.     resume="/dev/disk/by-uuid/${resume#UUID=}"
  62.     ;;
  63. esac
  64.  
  65. . ./scripts/functions
  66.  
  67. if [ ! -e "${resume}" ] || ! /sbin/blkid -p "${resume}" >/dev/null 2>&1; then
  68.     log_begin_msg "Waiting for resume device..."
  69.  
  70.     # Default delay is 5s
  71.     if [ -z "${RESUMEDELAY}" ]; then
  72.         slumber=5
  73.     else
  74.         slumber=${RESUMEDELAY}
  75.     fi
  76.     if [ -x /sbin/usplash_write ]; then
  77.         /sbin/usplash_write "TIMEOUT ${slumber}" || true
  78.     fi
  79.  
  80.     slumber=$(( ${slumber} * 10 ))
  81.     while [ ! -e "${resume}" ] || ! /sbin/blkid -p "${resume}" >/dev/null 2>&1; do
  82.         /bin/sleep 0.1
  83.         slumber=$(( ${slumber} - 1 ))
  84.         [ ${slumber} -gt 0 ] || break
  85.     done
  86.  
  87.     if [ ${slumber} -gt 0 ]; then
  88.         log_end_msg 0
  89.     else
  90.         log_end_msg 1 || true
  91.         exit
  92.     fi
  93. fi
  94.  
  95. magic=SWAPSPACE2S1SUSPEND
  96. if [ -n "${resume_offset}" ]; then
  97.     offset=$(($PAGE_SIZE * $resume_offset + 4076))
  98. else
  99.     offset=4076
  100. fi
  101. str=$(dd if=$resume bs=1 skip=$offset count=19 2>/dev/null)
  102. magic_found=
  103.  
  104. if [ "$str" = "$magic" ]; then
  105.     magic_found=yes
  106. fi
  107.  
  108. if [ -n "$magic_found" -a -x /sbin/usplash_write ]; then
  109.     # Force usplash to finish drawing before attempting resume.
  110.     # The screen can sometimes become corrupted if usplash is
  111.     # interrupted by the resume.
  112.     /sbin/usplash_write "PROGRESS 0" \
  113.         "TEXT-URGENT Waking up.  Please wait..." \
  114.         "INPUTCHAR" || true
  115.     read ignored < /dev/.initramfs/usplash_outfifo
  116. fi
  117.  
  118. # hardcode path, uswsusp ships an resume binary too
  119. if [ -n "${resume_offset}" ]; then
  120.     /bin/resume ${resume} ${resume_offset} >/dev/null 2>&1
  121. else
  122.     /bin/resume ${resume} >/dev/null 2>&1
  123. fi
  124.  
  125. # Not reached if resume is successful
  126.  
  127. if [ -n "$magic_found" -a -x /sbin/usplash_write ]; then
  128.     /sbin/usplash_write "FAILURE failed!" \
  129.         "TEXT-URGENT Attempting normal startup." || true
  130. fi
  131.